 
export var selectResult = ref();
export var insertResult = ref();
export var updateResult = ref();
export var deleteResult = ref();
export var saveResult = ref();
export const tableRef=ref(null);
 
export const selectData1 = async (jybh,obj,jylb) => {
    const res = await window.xinpuHttpApi(jybh,obj,jylb);
    return res;
}

//1查询数据源的变量常量
export var dataSourceWeb1 = ref([]); 
export const selectDataWeb1 = async (jybh,obj) => {
    const res = await window.xinpuWebsApi(jybh, obj);
    dataSourceWeb1.value=res.ReContent;
    return res;
}


//2保存交易
export const saveData1=async(jybh,jylb,dataSource,sycxlb)=>{
    let dataSourceTableListConst = {"sycxlb":"","list":[]}  //临时数据源用来存储插入、修改、删除数据源 
    for(let i=0;i<dataSource.length;i++){
      if(dataSource[i].saveflag!=0 && dataSource[i].saveFlag!=0){
         //移除这两个属性
        delete dataSource[i].ReContent;
        delete dataSource[i]._X_ROW_KEY;
        dataSourceTableListConst.list.push(dataSource[i]);  
      }
    }
    dataSourceTableListConst.sycxlb=sycxlb;
    const res = await window.xinpuHttpApi(jybh, dataSourceTableListConst,jylb);
    return res;
}

//3.插入方法,mc是插入新行后把光标定位到新行的那个列的名称
export const insertFun=async (obj,dataSource)=>{
    //点插入的时候新建一行临时数据，数据里面给定一些默认值，其他让用户选择
    const insertRowObj=ref(obj);
    const $table = tableRef.value;
    dataSource.push(insertRowObj.value);
    //const newRow  = await $table.insertAt(insertRowObj.value, -1);
    //await $table.setEditCell(newRow, mc);
    $table.setCurrentRow(insertRowObj);
    return '新建行成功';
}

export const insertFun2=async (obj,dataSource,tableName)=>{
  //点插入的时候新建一行临时数据，数据里面给定一些默认值，其他让用户选择
  const insertRowObj=ref(obj);
  const $table = tableName.value;
  dataSource.push(insertRowObj.value);
  $table.setCurrentRow(insertRowObj);
  return '新建行成功';
}



//4.修改方法
//2.4修改方法
//定义一个变量记录变化前后的值
let updateConst='';
export const updateFun=(row,a,dataSource)=>{
  
  const $table = tableRef.value;
  if(a==1){
    updateConst=row.column.model.value;
    console.log(updateConst);
  }
  else if(a==2){
    console.log(row.column.model.value);
     if(dataSource[$table.getRowSeq(getPageRigthDataObj.value)-1].saveFlag==0){
      if(updateConst!=row.column.model.value){
        dataSource[$table.getRowSeq(row.row)-1].saveFlag=2;
        //  判断成功后，就把updateConst恢复为空
        updateConst='';
      }
    }
  } 
  else if(a==3){
    cellClick(row,dataSource);
  }
}
export const getPageRigthDataObj=ref({});
export const cellClickConst=ref('删除');
export const cellClick=(row,dataSource)=>{
   
    if(row.row.saveFlag==3){
      cellClickConst.value='取消删除';
    }
    else{
        cellClickConst.value='删除';
    }
    getPageRigthDataObj.value=row.row;
    watch(()=>[getPageRigthDataObj.value ], ([objnew ], [objold ]) => {
      // 右侧子界面的数据是来源于左侧表格点击后的一行对象的数据，要监听是在右侧修改这个行对象带来的改变，不
      // 要点击第一行后又点击第二行的数据带来的改变，所以这里要判断一下，上次的老数据必须和本次的新数据一致
      // 不然就认为你是点击了其他行带来的改变，所以就不做修改标记处理
      if(getPageRigthDataObj.value==objold){
        // console.log(getPageRigthDataObj.value.dbhm)
        // console.log(objold.dbhm)
        // if(getPageRigthDataObj.value.dbhm==objold.dbhm){
          const $table = tableRef.value;
          //添加行后标记是3，要点到单元格做标记，这个位置和修改方法一致了，所以加个判断只有标记不是新增和删除类型的才做修改标记
          if(dataSource[$table.getRowSeq(getPageRigthDataObj.value)-1]!=undefined){
              if(dataSource[$table.getRowSeq(getPageRigthDataObj.value)-1].saveFlag==0){
              dataSource[$table.getRowSeq(getPageRigthDataObj.value)-1].saveFlag=2;
            }
          }    
        
        
      }
   }, { deep: true });
}
//2.3删除方法
export const deleteFun=(dataSource)=>{
    const $table = tableRef.value;
    const selectRecords = $table.getCurrentRecord();
    dataSource.value[$table.getRowSeq(selectRecords)-1].saveFlag=3;
    console.log( $table.getRowSeq(selectRecords) )
    console.log(dataSource.value[$table.getRowSeq(selectRecords)-1] )
}

export const biaoshi = (cellValue ) => {
  if(cellValue=='2')
  {
   return   '待改'
  }
  else if(cellValue=='1')
  {
   return  '待增'
  }
  else if(cellValue=='3')
  {
   return  '待删'
  }
  else if(cellValue=='9')
  {
   return  '待删'
  }
  else
  {
   return ''
  }  
}